package server.persistencia;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Vector;

import server.dominio.Sudoku;
import server.dominio.TableroJuego;
import server.persistencia.FiltroFicheros;


public class TableroJuegoDAOFS extends TableroJuegoDAO{
	private String path;
	private TableroJuego tableroJuego;

	public TableroJuegoDAOFS(TableroJuego tableroJuego, String ubicacionSudokus) {
		super(tableroJuego);
		if (!ubicacionSudokus.endsWith("/"))
			ubicacionSudokus+="/";
		this.path=ubicacionSudokus;
	}

	

	public void getTableroJuegoByORMID(String id) throws Exception {
		String fileName=this.path + "sudoku" + id + ".txt";
		FileInputStream fi=new FileInputStream(fileName);
		byte[] b=new byte[fi.available()];
		fi.read(b);
		fi.close();
		String ristra=new String(b);
		this.tableroJuego.setId(Integer.parseInt(id));
		this.tableroJuego.setTablero(ristra);
		//this.tableroJuego.crearVectorDeJugadores();

	}

	public void insert(String sudoku) throws Exception {
		FiltroFicheros filtro=new FiltroFicheros();
		Vector<String> ficheros=filtro.loadFiles(this.path);
		int maximo=Integer.MIN_VALUE;
		for (String s : ficheros) {
			String sNumero=s.substring(7, s.indexOf("."));
			int numero=Integer.parseInt(sNumero);
			if (numero>maximo)
				maximo=numero;
		}
		maximo+=1;
		FileOutputStream fos=new FileOutputStream(this.path + maximo + ".txt");
		fos.write(sudoku.getBytes());
		fos.close();
	}

	public void update() throws Exception {
		String fileName=this.path + "sudoku" + this.tableroJuego.getId() + ".txt";
		FileOutputStream fos=new FileOutputStream(fileName);
		fos.write(this.tableroJuego.getMomento().getBytes());//porque en el fichero se almacena el valor del tablero en un momento dado
		fos.close();
	}

	public Vector<String> getSudokus() {
		Vector<String> result=new Vector<String>();
		FiltroFicheros filtro=new FiltroFicheros();
		Vector<String> ficheros=filtro.loadFiles(this.path);
		for (String s : ficheros) {
			String sNumero=s.substring(6, s.indexOf("."));
			result.add(sNumero);
		}
		return result;
	}

	
	





}

